<!--
 	* @author dumeng
-->
<template>
  <div class="wx-auth" id="wx_auth">
    <p>正在跳转，请稍后...</p>
    <img src="../assets/images/autologin.png" alt="">
  </div>
</template>

<script>
	import wxApi from '@/common/wxapi'
	import {Dialog} from 'vant';

	export default {
		name: "WxAuth",
		data() {
			return {}
		},
		methods: {
			base64encode(str) {
				var base64EncodeChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
				var base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1)
				var out, i, len
				var c1, c2, c3
				len = str.length
				i = 0
				out = ''
				while (i < len) {
					c1 = str.charCodeAt(i++) & 0xff
					if (i == len) {
						out += base64EncodeChars.charAt(c1 >> 2)
						out += base64EncodeChars.charAt((c1 & 0x3) << 4)
						out += '=='
						break
					}
					c2 = str.charCodeAt(i++)
					if (i == len) {
						out += base64EncodeChars.charAt(c1 >> 2)
						out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4))
						out += base64EncodeChars.charAt((c2 & 0xF) << 2)
						out += '='
						break
					}
					c3 = str.charCodeAt(i++)
					out += base64EncodeChars.charAt(c1 >> 2)
					out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4))
					out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6))
					out += base64EncodeChars.charAt(c3 & 0x3F)
				}
				return out
			},
      isJoinWX() {
				return new Promise((resolve, reject) => {
					this.$axios.get('/API-ENTERPRISE-APP/app/sysConfig/getByName?name=WECHAT_IS_JOIN').then(res =>{
						if(res.code && res.code === '200'){
							if( res.data.configValue === 'YES'){
								resolve()
							} else {
								reject()
              }
						}
					}).catch(err =>{
						reject()
					})
        })
      },

    },
		created() {
			if (wxApi.isweixin()) {
				this.isJoinWX().then(() =>{
					if (this.$route.query.openid) {
						this.$store.dispatch('getToken', this.$route.query.openid).then(() => {
							this.$router.replace('/')
						}).catch(err => {
							this.$router.replace('/')
						});
					} else {
						this.$axios.get('/API-ENTERPRISE-APP/app/wechat/getAppId').then(res =>{
							if(res.code && res.code === '200') {
								this.$dialog.loading.open('自动登录中...')
								const appid = res.data.configValue || 'wx7805cd311227ad78'
								const _pppp = this.base64encode(`${location.origin}/#/wxAuth`).replace(/\//g, ':').replace(/\+/g, '.')
								const redirectUrl = `${location.origin}/API-ENTERPRISE-APP/app/wechat/oauth2?redirect=${_pppp}`
								window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + appid +
									'&redirect_uri=' + encodeURIComponent(redirectUrl) +
									'&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect'
							} else {
								this.$dialog.toast({
									mes: res.msg || '获取授权信息失败，请联系管理员',
									timeout: 1500
								})
							}

						}).catch(err =>{
							this.$dialog.toast({
								mes: '获取授权信息失败，请联系管理员',
								timeout: 1500
							})
						})
					}
        }).catch(() =>{
					this.$router.replace('/')
        })
			} else {
				Dialog.alert({
					title: '访问限制',
					message: '请使用微信客户端访问本地址',
				}).then(() => {
					this.$router.replace('/')
				});
			}
		}

	}
</script>
<style lang="scss" type="text/scss">
  .wx-auth{
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    p{
      position: absolute;
      top: rem(900);
      left: 50%;
      transform: translateX(-50%);
      color: #666666;
      font-size: rem(28);
    }
    img{
      width: 100%;
      height: rem(800);
    }
  }
</style>
